<?php

header("Content-Type: text/html;charset=utf-8");
require_once("Basededatos.php");

class Kardex {

    public $entitat = 'kardex';
    public $nomDadesClau = array('codigoKardex');
    public $fk = array(
        'localizacionk' => array('Localizacion', 'descripcionLocalizacion', 'localizacionSelected', 'localizacion'),
        'tipomovimientok' => array('Tipomovimiento', 'descripcionTipoMovimiento', 'tipomovimientoSelected', 'tipomovimiento'),
        'rolk' => array('Rol', 'descripcionRol', 'rolSelected', 'rol'),
        'usuariok' => array('Usuario', 'codigoUsuario', 'usuarioSelected', 'usuario'),
        'productok' => array('Producto', 'descripcionProducto', 'productoSelected', 'producto'),
        'localizacionprocedk' => array('Localizacion', 'descripcionLocalizacion', 'localizacionSelected', 'localizacion')
    );
//tipus de dades string, int, double, date
    public $tipoDadesClau = array(
        'codigoKardex' => 'int'
    );
    public $tipoDades = array(
        'codigoKardex' => 'int',
        'fechaKardex' => 'date',
        'fechaIntroduccion' => 'date',
        'localizacionk' => 'int',
        'tipomovimientok' => 'int',
        'rolk' => 'int',
        'usuariok' => 'string',
        'productok' => 'int',
        'lote' => 'string',
        'cantidad' => 'double',
        'cantidadpendiente' => 'double',
        'kardexorigen' => 'string',
        'localizacionprocedk' => 'int',
        'observaciones' => 'string',
        'liberadok' => 'int'
    );
    public $tipoCero = array(
        'codigoKardex' => 'NULL',
        'fechaKardex' => 'NULL',
        'fechaIntroduccion' => 'NULL',
        'localizacionk' => 'NULL',
        'tipomovimientok' => 'NULL',
        'rolk' => 'NULL',
        'usuariok' => '',
        'productok' => 'NULL',
        'lote' => '',
        'cantidad' => 'NULL',
        'cantidadpendiente' => 'NULL',
        'kardexorigen' => '',
        'localizacionprocedk' => 'NULL',
        'observaciones' => '',
        'liberadok' => '0'
    );
    public $nomDadesTotal = array('codigoKardex', 'fechaKardex', 'fechaIntroduccion', 'localizacionk', 'tipomovimientok', 'rolk', 'usuariok', 'productok', 'lote', 'cantidad', 'cantidadpendiente', 'kardexorigen', 'localizacionprocedk', 'observaciones', 'liberadok');
    public $nomDadesCreate = array('codigoKardex', 'fechaKardex', 'fechaIntroduccion', 'localizacionk', 'tipomovimientok', 'rolk', 'usuariok', 'productok', 'lote', 'cantidad', 'cantidadpendiente', 'kardexorigen', 'localizacionprocedk', 'observaciones', 'liberadok');
    public $nomDadesUpdate = array('fechaKardex', 'fechaIntroduccion', 'localizacionk', 'tipomovimientok', 'rolk', 'usuariok', 'productok', 'lote', 'cantidad', 'cantidadpendiente', 'kardexorigen', 'localizacionprocedk', 'observaciones', 'liberadok');
    public $bd;
    public $utiles;
    public $llista = array();
    public $indice = 0;
    public $unkardex = array();

    public function __construct($bd) {
        $this->bd = $bd;
        $this->utiles = $bd->utiles;
    }

    public function getLlista() {
        $resultado = mysql_query('SELECT * FROM ' . $this->entitat, $this->bd->conexion);
        $llistaprevia = array();
        $i = 0;
        while ($v = mysql_fetch_array($resultado)) {
            foreach ($v as $r => $index) {
                if (isset($this->fk[$r])) {
                    $otro = false;
                    if (strtoupper($this->fk[$r][0]) != strtoupper($this->entitat)) {
                        require_once($this->fk[$r][0] . '.php');
                        $otro = true;
                    }
                    $laentidad = 'new ' . $this->fk[$r][0] . '($this->bd);';
                    eval('$ef = ' . $laentidad);
                    $this->llista[$i][$r] = ''; //$v[$r];
                    //selectClau
                    $lallista = $ef->selectClau($v[$r]);
                    if ($ef == null) {
                        $this->llista[$i][$r] = 'no encontrado';
                    } else {
                        foreach ($lallista as $elem) {
                            $this->llista[$i][$r] = $elem[$this->fk[$r][1]];
                        }
                    }
                } else {
                    $this->llista[$i][$r] = $v[$r];
                }
            }
            $i++;
        }
    }

    public function createEntitat($valors) {

        $checkValores = true;
        $i = 0;
        foreach ($this->nomDadesCreate as $index) {
            $valors[$i] = addslashes($valors[$i]);
            if ($this->tipoDades[$index] == "int") {
                if ($valors[$i] != "") {
                    if (!is_numeric($valors[$i])) {
                        $checkValores = false;
                        break;
                    } else {
                        $valors[$i] = (int) $valors[$i];
                    }
                }
            }
            $i++;
        }
        if (!$checkValores) {
            $_SESSION['missatge'] = "msg-bbdd-030";
            return false;
        } else {
            $into = $this->utiles->comaNoms($this->nomDadesCreate);
            $values = $this->utiles->comaValoresTipo($this->tipoDades, $this->tipoCero, $this->nomDadesCreate, $valors, ",");
            $strQuery = "INSERT INTO " . $this->entitat . " (" . $into . ") VALUES (" . $values . ")";
            $insert = mysql_query($strQuery, $this->bd->conexion);
            if ($insert) {
                $_SESSION['missatge'] = "msg-bbdd-040";
                return true;
            } else {
                $_SESSION['missatge'] = "msg-bbdd-050";
                return false;
            }
        }
    }

    public function updateEntitat($claus, $valors) {
        /*
         * ELS NOMS DELS CAMPS A UPDATE SON A $nomDadesUpdate
         * Antes del update
         * - se evita inyección de código con addslashes
         * - se cambia string a int en el caso de int a la bbdd
         * - se utiliza Utiles para preparar el sql (SET ... WHERE ...)
         */

        $checkValores = true;
        $i = 0;
        foreach ($this->nomDadesUpdate as $index) {
            $valors[$i] = addslashes($valors[$i]);
            if ($this->tipoDades[$index] == "int") {
                if ($valors[$i] != "") {
                    if (!is_numeric($valors[$i])) {
                        $checkValores = false;
                        break;
                    } else {
                        $valors[$i] = (int) $valors[$i];
                    }
                }
            }
            $i++;
        }
        $i = 0;
        foreach ($this->nomDadesClau as $index) {
            $claus[$i] = addslashes($claus[$i]);
            if ($this->tipoDadesClau[$index] == "int") {
                if ($claus[$i] != "") {
                    if (!is_numeric($claus[$i])) {
                        $checkValores = false;
                        break;
                    } else {
                        $claus[$i] = (int) $claus[$i];
                    }
                }
            }
            $i++;
        }
        if (!$checkValores) {
            $_SESSION['missatge'] = "msg-bbdd-030";
            return false;
        } else {
            $values = $this->utiles->comaValoresNomTipo($this->tipoDades, $this->nomDadesUpdate, $valors, ",");
            $claves = $this->utiles->comaValoresNomTipo($this->tipoDades, $this->nomDadesClau, $claus, "AND");
            $update = mysql_query("UPDATE " . $this->entitat . " SET " . $values . " WHERE " . $claves, $this->bd->conexion);
            if ($update) {
                $_SESSION['missatge'] = "msg-bbdd-060";
                return true;
            } else {
                $_SESSION['missatge'] = "msg-bbdd-070";
                return false;
            }
        }
    }

    public function deleteEntitat($claus) {
        for ($i = 0, $size = count($claus); $i < $size; $i++) {
            $claus[$i] = addslashes($claus[$i]);
        }
        $claves = $this->utiles->comaValoresNomTipo($this->tipoDades, $this->nomDadesClau, $claus, "AND");

        $delete = mysql_query("DELETE FROM " . $this->entitat . " WHERE " . $claves, $this->bd->conexion);
        if ($delete) {
            $_SESSION['missatge'] = "msg-bbdd-080";
            return true;
        } else {
            $_SESSION['missatge'] = "msg-bbdd-090";
            return false;
        }
    }

    public function selectClau($claus) {
        for ($i = 0, $size = count($claus); $i < $size; $i++) {
            $claus[$i] = addslashes($claus[$i]);
        }
        $lallista = array();
        $claves = $this->utiles->comaValoresNomTipo($this->tipoDades, $this->nomDadesClau, $claus, "AND");
        $resultado = mysql_query("SELECT * FROM " . $this->entitat . " WHERE " . $claves, $this->bd->conexion);
        while ($element = mysql_fetch_assoc($resultado)) {
            $lallista[] = $element;
        }
        return $lallista;
    }

    public function getLlistaks($data, $localizacion, $producto) {
        $squery = "SELECT * FROM kardex,tipomovimiento WHERE tipomovimientok = codigoTipoMovimiento AND (fechaKardex >= '" . $data . "' ";
        $squery = $squery . " OR cantidadpendiente > 0) AND localizacionk = " . $localizacion . " AND productok = " . $producto;
        $squery = $squery . " ORDER BY fechaKardex";
        $resultado = mysql_query($squery, $this->bd->conexion);
        $llistaprevia = array();
        $i = 0;
        while ($v = mysql_fetch_array($resultado)) {
            foreach ($v as $r => $index) {
                if (isset($this->fk[$r])) {
                    $otro = false;
                    if (strtoupper($this->fk[$r][0]) != strtoupper($this->entitat)) {
                        require_once($this->fk[$r][0] . '.php');
                        $otro = true;
                    }
                    $laentidad = 'new ' . $this->fk[$r][0] . '($this->bd);';
                    eval('$ef = ' . $laentidad);
                    $this->llista[$i][$r] = ''; //$v[$r];
                    //selectClau
                    $lallista = $ef->selectClau($v[$r]);
                    if ($ef == null) {
                        $this->llista[$i][$r] = 'no encontrado';
                    } else {
                        foreach ($lallista as $elem) {
                            $this->llista[$i][$r] = $elem[$this->fk[$r][1]];
                            $this->llista[$i][$r . 'codi'] = $v[$r];
                        }
                    }
                } else {
                    //formateamos los double con 2 decimales
                    if (isset($this->tipoDades[$r])) {
                        if ($this->tipoDades[$r] == 'double') {
                            $this->llista[$i][$r] = number_format($v[$r], 2, '.', '');
                        } else {
                            if ($this->tipoDades[$r] == 'date') {
                                $this->llista[$i][$r . 'date'] = $v[$r];
                                $this->llista[$i][$r] = $this->utiles->mostraDatafromBD($v[$r]) . ' - ' . $this->utiles->mostraTimefromBD($v[$r]);
                            } else {
                                $this->llista[$i][$r] = $v[$r];
                            }
                        }
                    } else {
                        $this->llista[$i][$r] = $v[$r];
                    }
                }
            }
            $i++;
        }
    }

    public function createEntitatnuevo() {
        mysql_query("BEGIN");
        //Se accede a la configuración del kardex
        $codigoCkardex = (int) $_GET['codigoCkardex'];
        $resultadock = mysql_query("SELECT * FROM ckardex WHERE codigoCKardex = " . $codigoCkardex, $this->bd->conexion);
        $ckardex = mysql_fetch_array($resultadock);

        //Se accede al prefijo de la localización / producto 
        $codigoLocalizacion = (int) $_GET['localizacionk'];
        $codigoProducto = (int) $_GET['productok'];

        $nuevolote = '';
        if ($ckardex['asignalote']) {
            $resultadopf = mysql_query("SELECT * FROM prefijo WHERE localizacionpf = " . $codigoLocalizacion . " AND productopf = " . $codigoProducto, $this->bd->conexion);
            if ($resultadopf) {
                $prefijo = mysql_fetch_array($resultadopf);
                $nuevolote = $prefijo['codigoPrefijo'] . $prefijo['secuenciapf'];
                $updatepf = mysql_query("update prefijo p set p.secuenciapf = p.secuenciapf + 1 where codigoPrefijo = '" . $prefijo['codigoPrefijo'] . "'", $this->bd->conexion);
            }
        }

        //Convertimos la fecha y hora de la pantalla

        $fechabd = $this->utiles->convertStringDate($_GET['fechaKardex'], $_GET['horaKardex']);
        $fechabdActual = $this->utiles->convertStringDate(date('d/m/Y'), date('H:i:s'));

        //EMPIEZA LA TRANSACCION

        $lotecon = '';
        $kardexcon = '';
        $cantidadcon = 0.0;
        $resultados = array();
        $i = 0;
        //Por cada operación del carrito, se crea una operación en la localización, producto y cantidad del parámetro
        foreach ($_GET['arraypasar'] as $operacion) {
            //Se actualiza el saldo pendiente de la operación origen (siempre que haya)
            if (!$operacion['kardexorigen'] == '') {
                $update = mysql_query("update kardex k set k.cantidadpendiente = k.cantidadpendiente - " . (int) $operacion['cantidad'] . " where codigoKardex = " . (int) $operacion['kardexorigen'], $this->bd->conexion);
                $selectupdated = mysql_query("select * from kardex where codigoKardex = " . (int) $operacion['kardexorigen'], $this->bd->conexion);
                while ($kardexupdated = mysql_fetch_array($selectupdated)) {
                    $saldolote = 0;
                }
            } else {
                $saldolote = (int) $operacion['cantidad'];
            }

            //preparamos los nombres de los campos para el INSERT
            $nombres = '(' . codigoKardex . ', ';
            $nombres = $nombres . fechaKardex . ', ';
            $nombres = $nombres . fechaIntroduccion . ', ';
            $nombres = $nombres . localizacionk . ', ';
            $nombres = $nombres . tipomovimientok . ', ';
            $nombres = $nombres . rolk . ', ';
            $nombres = $nombres . usuariok . ', ';
            $nombres = $nombres . productok . ', ';
            $nombres = $nombres . lote . ', ';
            $nombres = $nombres . cantidad . ', ';
            $nombres = $nombres . cantidadpendiente . ', ';
            $nombres = $nombres . kardexorigen . ',';
            $nombres = $nombres . localizacionprocedk . ', ';
            $nombres = $nombres . observaciones . ', ';
            $nombres = $nombres . liberadok . ')';
            //preparamos los valores del INSERT
            $valores = '(NULL, ';
            $valores = $valores . "'" . $fechabd . "', ";
            $valores = $valores . "'" . $fechabdActual . "', ";
            $valores = $valores . (int) $_GET['localizacionk'] . ", ";
            $valores = $valores . (int) $_GET['tipomovimientok'] . ", ";
            $valores = $valores . (int) $_GET['rolk'] . ", ";
            $valores = $valores . "'" . $_GET['usuariok'] . "', ";
            $valores = $valores . (int) $_GET['productok'] . ", ";
            if ($nuevolote == '') {
                $valores = $valores . "'" . $operacion['lote'] . "', ";
            } else {
                if ($operacion['lote'] == '') {
                    $valores = $valores . "'" . $nuevolote . "', ";
                } else {
                    $valores = $valores . "'" . $operacion['lote'] . "@" . $nuevolote . "', ";
                }
            }
            $valores = $valores . (double) $operacion['cantidad'] . ',';
            $valores = $valores . $saldolote . ", ";
            $valores = $valores . "'" . $operacion['kardexorigen'] . "', ";
            $valores = $valores . (int) $_GET['localizacionprocedk'] . ", ";
            //
            $valores = $valores . "'" . $_GET['observaciones'] . "', ";
            $valores = $valores . (int) $ckardex['liberadock'] . ")";




            $cantidadcon = $cantidadcon + (double) $operacion['cantidad'];
            $strQuery = "INSERT INTO " . $this->entitat . " " . $nombres . " VALUES " . $valores;
            $resulta = mysql_query($strQuery, $this->bd->conexion);
            //se suma para el consolidado
            if ($lotecon == '') {
                $lotecon = $operacion['lote'];
                //$kardexcon = $operacion['kardexorigen'];
                $kardexcon = mysql_insert_id();
            } else {
                $lotecon = $lotecon . "@" . $operacion['lote'];
                //$kardexcon = $kardexcon . "@" . $operacion['kardexorigen'];

                $kardexcon = $kardexcon . "@" . mysql_insert_id();
            }
            //se añaden los true para el commit
            if ($resulta) {

                $resultados[$i] = true;
            } else {
                $resultados[$i] = false;
            }
            $i++;
        }
        //creamos la operación derivada o las operaciones derivadas si existe el grupo de movimientos

        if ($ckardex['grupomovimientock'] == null) {
            //Se accede al prefijo de la localización dependiente / producto dependiente (puede no existir)
            $codigoLocalizacionp = (int) $_GET['localizacionprocedk'];
            $codigoProductop = $ckardex['productodependiente'];

            $nuevoloted = '';
            if ($ckardex['asignalotedependiente']) {
                $resultadopfd = mysql_query("SELECT * FROM prefijo WHERE localizacionpf = " . $codigoLocalizacionp . " AND productopf = " . $codigoProductop, $this->bd->conexion);
                if ($resultadopfd) {
                    $prefijod = mysql_fetch_array($resultadopfd);
                    $nuevoloted = $prefijod['codigoPrefijo'] . $prefijod['secuenciapf'];
                    $updatepfd = mysql_query("update prefijo p set p.secuenciapf = p.secuenciapf + 1 where codigoPrefijo = '" . $prefijod['codigoPrefijo'] . "'", $this->bd->conexion);
                }
            }
            //preparamos los nombres de los campos para el INSERT    
            $nombres = '(' . codigoKardex . ', ';
            $nombres = $nombres . fechaKardex . ', ';
            $nombres = $nombres . fechaIntroduccion . ', ';
            $nombres = $nombres . localizacionk . ', ';
            $nombres = $nombres . tipomovimientok . ', ';
            $nombres = $nombres . rolk . ', ';
            $nombres = $nombres . usuariok . ', ';
            $nombres = $nombres . productok . ', ';
            $nombres = $nombres . lote . ', ';
            $nombres = $nombres . cantidad . ', ';
            $nombres = $nombres . cantidadpendiente . ', ';
            $nombres = $nombres . kardexorigen . ',';
            $nombres = $nombres . localizacionprocedk . ', ';
            $nombres = $nombres . observaciones . ', ';
            $nombres = $nombres . liberadok . ')';
            //preparamos los valores del INSERT
            $valores = '(NULL, ';
            $valores = $valores . "'" . $fechabd . "', ";
            $valores = $valores . "'" . $fechabdActual . "', ";
            $valores = $valores . (int) $_GET['localizacionprocedk'] . ", ";
            $valores = $valores . (int) $ckardex['tipomovimientodependiente'] . ", ";
            $valores = $valores . (int) $_GET['rolk'] . ", ";
            $valores = $valores . "'" . $_GET['usuariok'] . "', ";
            $valores = $valores . (int) $ckardex['productodependiente'] . ", ";
            if ($nuevoloted == '') {
                $valores = $valores . "'" . $lotecon . "', ";
            } else {
                $valores = $valores . "'" . $lotecon . "@" . $nuevoloted . "', ";
            }
            $valores = $valores . $cantidadcon . ',';
            $valores = $valores . $cantidadcon . ", ";
            $valores = $valores . "'" . $kardexcon . "', ";
            $valores = $valores . (int) $_GET['localizacionk'] . ", ";
            $valores = $valores . "'" . $_GET['observaciones'] . "', ";
            $valores = $valores . (int) $ckardex['liberadockd'] . ")";



            $strQuery = "INSERT INTO " . $this->entitat . " " . $nombres . " VALUES " . $valores;
            $resulta = mysql_query($strQuery, $this->bd->conexion);
            if ($resulta) {
                $resultados[$i] = true;
            } else {
                $resultados[$i] = false;
            }
        } else {
            require('../persistent/Cgrupomovimiento.php');
            $cgrupomovimiento = new Cgrupomovimiento($this->bd);
            $claus = array();
            $claus[0] = $ckardex['grupomovimientock'];
            $llistacgm = $cgrupomovimiento->selectgrupomovimiento($claus);
            foreach ($llistacgm as $elem) {

                // if ($minutos >= $elem['colorRojo']) 

                $codigoLocalizacionp = (int) $_GET['localizacionprocedk'];
                $codigoProductop = $elem['productocgm'];

                $nuevoloted = '';
                if ($elem['asignalotecgm']) {
                    $resultadopfd = mysql_query("SELECT * FROM prefijo WHERE localizacionpf = " . $codigoLocalizacionp . " AND productopf = " . $codigoProductop, $this->bd->conexion);
                    if ($resultadopfd) {
                        $prefijod = mysql_fetch_array($resultadopfd);
                        $nuevoloted = $prefijod['codigoPrefijo'] . $prefijod['secuenciapf'];
                        $updatepfd = mysql_query("update prefijo p set p.secuenciapf = p.secuenciapf + 1 where codigoPrefijo = '" . $prefijod['codigoPrefijo'] . "'", $this->bd->conexion);
                    }
                }
                //preparamos los nombres de los campos para el INSERT    
                $nombres = '(' . codigoKardex . ', ';
                $nombres = $nombres . fechaKardex . ', ';
                $nombres = $nombres . fechaIntroduccion . ', ';
                $nombres = $nombres . localizacionk . ', ';
                $nombres = $nombres . tipomovimientok . ', ';
                $nombres = $nombres . rolk . ', ';
                $nombres = $nombres . usuariok . ', ';
                $nombres = $nombres . productok . ', ';
                $nombres = $nombres . lote . ', ';
                $nombres = $nombres . cantidad . ', ';
                $nombres = $nombres . cantidadpendiente . ', ';
                $nombres = $nombres . kardexorigen . ',';
                $nombres = $nombres . localizacionprocedk . ', ';
                $nombres = $nombres . observaciones . ', ';
                $nombres = $nombres . liberadok . ')';
                //preparamos los valores del INSERT
                $valores = '(NULL, ';
                $valores = $valores . "'" . $fechabd . "', ";
                $valores = $valores . "'" . $fechabdActual . "', ";
                $valores = $valores . (int) $_GET['localizacionprocedk'] . ", ";
                $valores = $valores . (int) $elem['tipomovimientocgm'] . ", ";
                $valores = $valores . (int) $_GET['rolk'] . ", ";
                $valores = $valores . "'" . $_GET['usuariok'] . "', ";
                $valores = $valores . (int) $elem['productocgm'] . ", ";
                if ($nuevoloted == '') {
                    $valores = $valores . "'" . $lotecon . "', ";
                } else {
                    $valores = $valores . "'" . $lotecon . "@" . $nuevoloted . "', ";
                }
                if (( (double) $elem['cantidadfija']) > 0) {
                    $cantidadcon1 = (double) $elem['cantidadfija'];
                } else {
                    $cantidadcon1 = $cantidadcon * (double) $elem['factorcantidad'];
                }
                $valores = $valores . $cantidadcon1 . ',';
                $valores = $valores . $cantidadcon1 . ", ";
                $valores = $valores . "'" . $kardexcon . "', ";
                $valores = $valores . (int) $_GET['localizacionk'] . ", ";
                $valores = $valores . "'" . $_GET['observaciones'] . "', ";
                $valores = $valores . (int) $elem['liberadocgm'] . ")";




                $strQuery = "INSERT INTO " . $this->entitat . " " . $nombres . " VALUES " . $valores;
                $resulta = mysql_query($strQuery, $this->bd->conexion);
                if ($resulta) {
                    $resultados[$i] = true;
                } else {
                    $resultados[$i] = false;
                }
                $i++;
            }
        }




        $okcommit = true;
        foreach ($resultados as $resultado) {
            if (!$resultado) {
                $okcommit = false;
            }
        }
        if ($okcommit) {
            mysql_query("COMMIT");
        }
    }

    public function deleteEntitatnuevo($claus) {
        mysql_query("BEGIN");
        //se selecciona el kardex a eleminar para realizar las comprobaciones preliminares  
        $lallista = $this->selectClau($claus);


        //se seleccionan todos los kardex que en operación origen contengan a la actual a eliminar
        //SELECT * FROM kardex where kardexorigen like "18@%" or kardexorigen like "%@18@%" or kardexorigen like "%@18@"
        $squery = "SELECT * FROM kardex where kardexorigen like '" . $claus[0] . "@%' or kardexorigen like '%@" . $claus[0] . "@%' or kardexorigen like '%@" . $claus[0] . "' or kardexorigen = " . (int) $claus[0];
        $descendientes = mysql_query($squery, $this->bd->conexion);
        $encontrado = false;
        $mensaje = '';
        while ($d = mysql_fetch_array($descendientes)) {
            $encontrado = true;
            if (mensaje == '') {
                $mensaje = 'No puede eliminarse porque hay operaciones que tienen a ésta como dependiente: ' . $d['codigoKardex'] . ' - ';
            } else {
                $mensaje = $mensaje . $d['codigoKardex'] . ' - ';
            }
        }
        if ($encontrado) {
            return $mensaje;
        }

        //empieza la transacción para la eliminación de la operación actual, de las que depende y actualización de las operaciones origen
        //Se mira el kardex y para cada origen se eliminan pero actualizando a su vez el origen de éstas (éste no puede se compuesto)
        $dependientes = explode("@", $lallista[0]['kardexorigen']);
        $okcommit = true;
        $quedacero;
        foreach ($dependientes as $dependiente) {
            if ($okcommit) {
                $kardexdep = $this->selectClau($dependiente);

                //Si la operación derivada se queda
                //primero la actualizaión del origen de este (no es compuesto)
                //     if((int) $kardexdep[0]['cantidad'] )
                $update = mysql_query("update kardex k set k.cantidadpendiente = k.cantidadpendiente + " . (int) $kardexdep[0]['cantidad'] . " where codigoKardex = " . (int) $kardexdep[0]['kardexorigen'], $this->bd->conexion);
                if ($update) {
                    $okcommit = true;
                } else {
                    $okcommit = false;
                }
//y ahora el delete de ésta
                $delete = mysql_query("DELETE FROM kardex where codigoKardex = " . (int) $kardexdep[0]['codigoKardex'], $this->bd->conexion);
                if ($delete) {
                    $okcommit = true;
                } else {
                    $okcommit = false;
                }
                // Y hay que borrar todas las operaciones que tengan igual operación origen
                $delete = mysql_query("DELETE FROM kardex where kardexorigen = " . (int) $kardexdep[0]['codigoKardex'], $this->bd->conexion);
                if ($delete) {
                    $okcommit = true;
                } else {
                    $okcommit = false;
                }
            }
        }

        //al final eliminamos la operación actual
        if ($okcommit) {
            $delete = mysql_query("DELETE FROM kardex where codigoKardex = " . (int) $lallista[0]['codigoKardex'], $this->bd->conexion);
            if ($delete) {
                $okcommit = true;
            } else {
                $okcommit = false;
            }
        }
        if ($okcommit) {
            mysql_query("COMMIT");
            return 'Eliminación efectuada con éxito';
        } else {
            return 'ELIMINACION NO EFECTUADA';
        }
    }

    //Consulta localización
    public function getLlistaksC($data, $localizacion, $producto, $signo, $datafi,$solofec) {
        if ($data != null && $data != '' && $data != 0) {
            $qdata = " fechaKardex >= '" . $data . "' ";
        } else {
            $qdata = '';
        }
        if ($datafi != null && $datafi != '' && $datafi != 0) {
            $qdatafi = " AND fechaKardex <= '" . $datafi . "' ";
        } else {
            $qdatafi = '';
        }
        if ($localizacion != null && $localizacion != '' && $localizacion != 0) {
            $qlocalizacion = " AND localizacionk = " . $localizacion;
        } else {
            $qlocalizacion = '';
        }
        if ($producto != null && $producto != '' && $producto != 0) {
            $qproducto = " AND productok = " . $producto;
        } else {
            $qproducto = '';
        }
        if ($signo != null && $signo != '' && $signo != 0) {
            $qsigno = " AND signo = " . $signo;
        } else {
            $qsigno = '';
        }
        $squery = "SELECT * FROM kardex,tipomovimiento,localizacion,tipolocalizacion ";
        $squery = $squery . " WHERE tipomovimientok = codigoTipoMovimiento ";
        $squery = $squery . " AND localizacionk = codigoLocalizacion AND tipoLocalizacion = codigoTipoLocalizacion AND tipomovimientok = codigoTipoMovimiento";
        if($solofec == '0'){
             $squery = $squery . $qdatafi . $qlocalizacion . $qproducto . $qsigno . " AND (" . $qdata . " OR cantidadpendiente != 0) ";
        }else{
             $squery = $squery . $qdatafi . $qlocalizacion . $qproducto . $qsigno . " AND " . $qdata;
        }
       
        //  $squery = $squery . $qdata . $qdatafi . $qlocalizacion . $qproducto . $qsigno;
        $squery = $squery . " ORDER BY codigoTipoLocalizacion,codigoLocalizacion,fechaKardex";
        $resultado = mysql_query($squery, $this->bd->conexion);
        $llistaprevia = array();
        $i = 0;
        while ($v = mysql_fetch_array($resultado)) {
            foreach ($v as $r => $index) {
                if (isset($this->fk[$r])) {
                    $otro = false;
                    if (strtoupper($this->fk[$r][0]) != strtoupper($this->entitat)) {
                        require_once($this->fk[$r][0] . '.php');
                        $otro = true;
                    }
                    $laentidad = 'new ' . $this->fk[$r][0] . '($this->bd);';
                    eval('$ef = ' . $laentidad);
                    $this->llista[$i][$r] = ''; //$v[$r];
                    //selectClau
                    $lallista = $ef->selectClau($v[$r]);
                    if ($ef == null) {
                        $this->llista[$i][$r] = 'no encontrado';
                    } else {
                        foreach ($lallista as $elem) {
                            $this->llista[$i][$r] = $elem[$this->fk[$r][1]];
                            $this->llista[$i][$r . 'codi'] = $v[$r];
                        }
                    }
                } else {
                    //formateamos los double con 2 decimales
                    if (isset($this->tipoDades[$r])) {
                        if ($this->tipoDades[$r] == 'double') {
                            $this->llista[$i][$r] = number_format($v[$r], 2, '.', '');
                        } else {
                            if ($this->tipoDades[$r] == 'date') {
                                $this->llista[$i][$r . 'date'] = $v[$r];
                                $this->llista[$i][$r] = $this->utiles->mostraDatafromBD($v[$r]) . ' - ' . $this->utiles->mostraTimefromBD($v[$r]);
                            } else {
                                $this->llista[$i][$r] = $v[$r];
                            }
                        }
                    } else {
                        $this->llista[$i][$r] = $v[$r];
                    }
                }
            }
            $i++;
        }
    }

    //Consulta Lote
    public function getLlistaksL($lotea) {
        $lotesa = explode('@', $lotea);
        $i = 0;
        foreach ($lotesa as $lote) {
            $qlote = " AND lote LIKE '%" . strtoupper($lote) . "%'";
            $squery = "SELECT * FROM kardex,tipomovimiento,localizacion,tipolocalizacion ";
            $squery = $squery . " WHERE tipomovimientok = codigoTipoMovimiento ";
            $squery = $squery . " AND localizacionk = codigoLocalizacion AND tipoLocalizacion = codigoTipoLocalizacion AND tipomovimientok = codigoTipoMovimiento";
            $squery = $squery . $qlote;
            $squery = $squery . " ORDER BY fechaKardex";
            $resultado = mysql_query($squery, $this->bd->conexion);
            $llistaprevia = array();
            while ($v = mysql_fetch_array($resultado)) {
                foreach ($v as $r => $index) {
                    if (isset($this->fk[$r])) {
                        $otro = false;
                        if (strtoupper($this->fk[$r][0]) != strtoupper($this->entitat)) {
                            require_once($this->fk[$r][0] . '.php');
                            $otro = true;
                        }
                        $laentidad = 'new ' . $this->fk[$r][0] . '($this->bd);';
                        eval('$ef = ' . $laentidad);
                        $this->llista[$i][$r] = ''; //$v[$r];
                        //selectClau
                        $lallista = $ef->selectClau($v[$r]);
                        if ($ef == null) {
                            $this->llista[$i][$r] = 'no encontrado';
                        } else {
                            foreach ($lallista as $elem) {
                                $this->llista[$i][$r] = $elem[$this->fk[$r][1]];
                                $this->llista[$i][$r . 'codi'] = $v[$r];
                            }
                        }
                    } else {
                        //formateamos los double con 2 decimales
                        if (isset($this->tipoDades[$r])) {
                            if ($this->tipoDades[$r] == 'double') {
                                $this->llista[$i][$r] = number_format($v[$r], 2, '.', '');
                            } else {
                                if ($this->tipoDades[$r] == 'date') {
                                    $this->llista[$i][$r . 'date'] = $v[$r];
                                    $this->llista[$i][$r] = $this->utiles->mostraDatafromBD($v[$r]) . ' - ' . $this->utiles->mostraTimefromBD($v[$r]);
                                } else {
                                    $this->llista[$i][$r] = $v[$r];
                                }
                            }
                        } else {
                            $this->llista[$i][$r] = $v[$r];
                        }
                    }
                }
                $i++;
            }
        }
    }

    //Consulta trazabilidad de lote
    public function getLlistaksLT($lotea) {
        $qlote = " AND lote = '" . strtoupper($lotea) . "'";
        $squery = "SELECT * FROM kardex,tipomovimiento,localizacion,tipolocalizacion ";
        $squery = $squery . " WHERE tipomovimientok = codigoTipoMovimiento ";
        $squery = $squery . " AND localizacionk = codigoLocalizacion AND tipoLocalizacion = codigoTipoLocalizacion AND tipomovimientok = codigoTipoMovimiento";
        $squery = $squery . $qlote;
        $squery = $squery . " ORDER BY fechaKardex DESC";
        $resultado = mysql_query($squery, $this->bd->conexion);
        $llistaprevia = array();
        $v = mysql_fetch_array($resultado);
        $this->i = 0;
        $this->addLista($v);
        if ($v['kardexorigen'] != null && $v['kardexorigen'] != '') {
            $this->buscaPorOrigen($v['kardexorigen']);
        }
    }

    public function buscaPorOrigen($origen) {
        $origena = explode('@', $origen);
        foreach ($origena as $ori) {

            $qorigen = " AND codigoKardex = " . $ori;
            $squery = "SELECT * FROM kardex,tipomovimiento,localizacion,tipolocalizacion ";
            $squery = $squery . " WHERE tipomovimientok = codigoTipoMovimiento ";
            $squery = $squery . " AND localizacionk = codigoLocalizacion AND tipoLocalizacion = codigoTipoLocalizacion AND tipomovimientok = codigoTipoMovimiento";
            $squery = $squery . $qorigen;
            $squery = $squery . " ORDER BY fechaKardex";
            $resultado = mysql_query($squery, $this->bd->conexion);
            $v = mysql_fetch_array($resultado);
            $this->addLista($v);
            if ($v['kardexorigen'] != null && $v['kardexorigen'] != '') {
                $this->buscaPorOrigen($v['kardexorigen']);
            }
        }
    }

    public function addLista($v) {
        foreach ($v as $r => $index) {
            if (isset($this->fk[$r])) {
                $otro = false;
                if (strtoupper($this->fk[$r][0]) != strtoupper($this->entitat)) {
                    require_once($this->fk[$r][0] . '.php');
                    $otro = true;
                }
                $laentidad = 'new ' . $this->fk[$r][0] . '($this->bd);';
                eval('$ef = ' . $laentidad);
                $this->llista[$this->i][$r] = ''; //$v[$r];
                //selectClau
                $lallista = $ef->selectClau($v[$r]);
                if ($ef == null) {
                    $this->llista[$this->i][$r] = 'no encontrado';
                } else {
                    foreach ($lallista as $elem) {
                        $this->llista[$this->i][$r] = $elem[$this->fk[$r][1]];
                        $this->llista[$this->i][$r . 'codi'] = $v[$r];
                    }
                }
            } else {
                //formateamos los double con 2 decimales
                if (isset($this->tipoDades[$r])) {
                    if ($this->tipoDades[$r] == 'double') {
                        $this->llista[$this->i][$r] = number_format($v[$r], 2, '.', '');
                    } else {
                        if ($this->tipoDades[$r] == 'date') {
                            $this->llista[$this->i][$r . 'date'] = $v[$r];
                            $this->llista[$this->i][$r] = $this->utiles->mostraDatafromBD($v[$r]) . ' - ' . $this->utiles->mostraTimefromBD($v[$r]);
                        } else {
                            $this->llista[$this->i][$r] = $v[$r];
                        }
                    }
                } else {
                    $this->llista[$this->i][$r] = $v[$r];
                }
            }
        }
        $this->i++;
    }

    //Consulta tipo localización
    public function getLlistaksTL($data, $producto, $signo, $datafi, $solofec) {
        if ($data != null && $data != '' && $data != 0) {
            $qdata = " fechaKardex >= '" . $data . "' ";
        } else {
            $qdata = '';
        }
        if ($datafi != null && $datafi != '' && $datafi != 0) {
            $qdatafi = " AND fechaKardex <= '" . $datafi . "' ";
        } else {
            $qdatafi = '';
        }

        if ($producto != null && $producto != '' && $producto != 0) {
            $qproducto = " AND productok = " . $producto;
        } else {
            $qproducto = '';
        }
        if ($signo != null && $signo != '' && $signo != 0) {
            $qsigno = " AND signo = " . $signo;
        } else {
            $qsigno = '';
        }
        $squery = "SELECT codigoTipoLocalizacion,descripcionTipoLocalizacion, localizacionk, SUM(cantidad*signo) as cantidad,SUM(cantidadpendiente*signo) as cantidadpendiente, MAX(fechaKardex) as fechaKardex ";
        $squery = $squery . " FROM kardex,tipomovimiento,localizacion,tipolocalizacion ";
        $squery = $squery . " WHERE tipomovimientok = codigoTipoMovimiento ";
        $squery = $squery . " AND localizacionk = codigoLocalizacion AND tipoLocalizacion = codigoTipoLocalizacion AND tipomovimientok = codigoTipoMovimiento";
        if ($solofec == '0') {
            $squery = $squery . $qdatafi . $qproducto . $qsigno . " AND (" . $qdata . " OR cantidadpendiente != 0) ";
        } else {
            $squery = $squery . $qdatafi . $qproducto . $qsigno . " AND " . $qdata;
        }

        $squery = $squery . " GROUP BY codigoTipoLocalizacion,descripcionTipoLocalizacion,localizacionk";
        $squery = $squery . " ORDER BY codigoTipoLocalizacion,codigoLocalizacion,fechaKardex";
        $resultado = mysql_query($squery, $this->bd->conexion);
        $llistaprevia = array();
        $i = 0;
        /*
         * 'localizacionk' => array('Localizacion', 'descripcionLocalizacion', 'localizacionSelected', 'localizacion'),
          'tipomovimientok' => array('Tipomovimiento', 'descripcionTipoMovimiento', 'tipomovimientoSelected', 'tipomovimiento'),
          'rolk' => array('Rol', 'descripcionRol', 'rolSelected', 'rol'),
          'usuariok' => array('Usuario', 'codigoUsuario', 'usuarioSelected', 'usuario'),
          'productok' => array('Producto', 'descripcionProducto', 'productoSelected', 'producto'),
          'localizacionprocedk' => array('Localizacion', 'descripcionLocalizacion', 'loca
         */
        while ($v = mysql_fetch_array($resultado)) {
            foreach ($v as $r => $index) {
                if (isset($this->fk[$r])) {
                    $otro = false;
                    if (strtoupper($this->fk[$r][0]) != strtoupper($this->entitat)) {
                        require_once($this->fk[$r][0] . '.php');
                        $otro = true;
                    }
                    $laentidad = 'new ' . $this->fk[$r][0] . '($this->bd);';
                    eval('$ef = ' . $laentidad);
                    $this->llista[$i][$r] = ''; //$v[$r];
                    //selectClau
                    $lallista = $ef->selectClau($v[$r]);
                    if ($ef == null) {
                        $this->llista[$i][$r] = 'no encontrado';
                    } else {
                        foreach ($lallista as $elem) {
                            $this->llista[$i][$r] = $elem[$this->fk[$r][1]];
                            $this->llista[$i][$r . 'codi'] = $v[$r];
                        }
                    }
                } else {
                    //formateamos los double con 2 decimales
                    if (isset($this->tipoDades[$r])) {
                        if ($this->tipoDades[$r] == 'double') {
                            $this->llista[$i][$r] = number_format($v[$r], 2, '.', '');
                        } else {
                            if ($this->tipoDades[$r] == 'date') {
                                $this->llista[$i][$r . 'date'] = $v[$r];
                                $this->llista[$i][$r] = $this->utiles->mostraDatafromBD($v[$r]) . ' - ' . $this->utiles->mostraTimefromBD($v[$r]);
                            } else {
                                $this->llista[$i][$r] = $v[$r];
                            }
                        }
                    } else {
                        $this->llista[$i][$r] = $v[$r];
                    }
                }
            }
            $i++;
        }
    }

    //Consulta localización
    public function exportTL($data, $producto, $signo, $datafi, $solofec) {
        if ($data != null && $data != '' && $data != 0) {
            $qdata = " fechaKardex >= '" . $data . "' ";
        } else {
            $qdata = '';
        }
        if ($datafi != null && $datafi != '' && $datafi != 0) {
            $qdatafi = " AND fechaKardex <= '" . $datafi . "' ";
        } else {
            $qdatafi = '';
        }
        if ($producto != null && $producto != '' && $producto != 0) {
            $qproducto = " AND productok = " . $producto;
        } else {
            $qproducto = '';
        }
        if ($signo != null && $signo != '' && $signo != 0) {
            $qsigno = " AND signo = " . $signo;
        } else {
            $qsigno = '';
        }
        $squery = "SELECT * FROM kardex,tipomovimiento,localizacion,tipolocalizacion ";
        $squery = $squery . " WHERE tipomovimientok = codigoTipoMovimiento ";
        $squery = $squery . " AND localizacionk = codigoLocalizacion AND tipoLocalizacion = codigoTipoLocalizacion AND tipomovimientok = codigoTipoMovimiento";
        if ($solofec == '0') {
            $squery = $squery . $qdatafi . $qproducto . $qsigno . " AND (" . $qdata . " OR cantidadpendiente != 0) ";
        } else {
            $squery = $squery . $qdatafi . $qproducto . $qsigno . " AND " . $qdata;
        }
        //$squery = $squery . $qdata . $qdatafi . $qproducto . $qsigno;
        $squery = $squery . " ORDER BY codigoTipoLocalizacion,codigoLocalizacion,fechaKardex";
        $resultado = mysql_query($squery, $this->bd->conexion);
        $llistaprevia = array();
        $i = 0;
        while ($v = mysql_fetch_array($resultado)) {
            foreach ($v as $r => $index) {
                if (isset($this->fk[$r])) {
                    $otro = false;
                    if (strtoupper($this->fk[$r][0]) != strtoupper($this->entitat)) {
                        require_once($this->fk[$r][0] . '.php');
                        $otro = true;
                    }
                    $laentidad = 'new ' . $this->fk[$r][0] . '($this->bd);';
                    eval('$ef = ' . $laentidad);
                    $this->llista[$i][$r] = ''; //$v[$r];
                    //selectClau
                    $lallista = $ef->selectClau($v[$r]);
                    if ($ef == null) {
                        $this->llista[$i][$r] = 'no encontrado';
                    } else {
                        foreach ($lallista as $elem) {
                            $this->llista[$i][$r] = $elem[$this->fk[$r][1]];
                            $this->llista[$i][$r . 'codi'] = $v[$r];
                        }
                    }
                } else {
                    //formateamos los double con 2 decimales
                    if (isset($this->tipoDades[$r])) {
                        if ($this->tipoDades[$r] == 'double') {
                            $this->llista[$i][$r] = number_format($v[$r], 2, '.', '');
                        } else {
                            if ($this->tipoDades[$r] == 'date') {
                                $this->llista[$i][$r . 'date'] = $v[$r];
                                $this->llista[$i][$r] = $this->utiles->mostraDatafromBD($v[$r]) . ' ' . $this->utiles->mostraTimefromBD($v[$r]);
                            } else {
                                $this->llista[$i][$r] = $v[$r];
                            }
                        }
                    } else {
                        $this->llista[$i][$r] = $v[$r];
                    }
                }
            }
            $i++;
        }
    }

    //Para liberación
    public function getLlistaksTLl($producto) {


        if ($producto != null && $producto != '' && $producto != 0) {
            $qproducto = " AND productok = " . $producto;
        } else {
            $qproducto = '';
        }
        $squery = "SELECT codigoTipoLocalizacion,descripcionTipoLocalizacion, localizacionk, SUM(cantidad*signo) as cantidad,SUM(cantidadpendiente*signo) as cantidadpendiente ";
        $squery = $squery . " FROM kardex,tipomovimiento,localizacion,tipolocalizacion ";
        $squery = $squery . " WHERE tipomovimientok = codigoTipoMovimiento ";
        $squery = $squery . " AND localizacionk = codigoLocalizacion AND tipoLocalizacion = codigoTipoLocalizacion AND tipomovimientok = codigoTipoMovimiento";
        $squery = $squery . $qproducto;
        $squery = $squery . " GROUP BY codigoTipoLocalizacion,descripcionTipoLocalizacion,localizacionk";
        $squery = $squery . " ORDER BY codigoTipoLocalizacion,codigoLocalizacion,fechaKardex";
        $resultado = mysql_query($squery, $this->bd->conexion);
        $llistaprevia = array();
        $i = 0;
        /*
         * 'localizacionk' => array('Localizacion', 'descripcionLocalizacion', 'localizacionSelected', 'localizacion'),
          'tipomovimientok' => array('Tipomovimiento', 'descripcionTipoMovimiento', 'tipomovimientoSelected', 'tipomovimiento'),
          'rolk' => array('Rol', 'descripcionRol', 'rolSelected', 'rol'),
          'usuariok' => array('Usuario', 'codigoUsuario', 'usuarioSelected', 'usuario'),
          'productok' => array('Producto', 'descripcionProducto', 'productoSelected', 'producto'),
          'localizacionprocedk' => array('Localizacion', 'descripcionLocalizacion', 'loca
         */
        while ($v = mysql_fetch_array($resultado)) {
            foreach ($v as $r => $index) {
                if (isset($this->fk[$r])) {
                    $otro = false;
                    if (strtoupper($this->fk[$r][0]) != strtoupper($this->entitat)) {
                        require_once($this->fk[$r][0] . '.php');
                        $otro = true;
                    }
                    $laentidad = 'new ' . $this->fk[$r][0] . '($this->bd);';
                    eval('$ef = ' . $laentidad);
                    $this->llista[$i][$r] = ''; //$v[$r];
                    //selectClau
                    $lallista = $ef->selectClau($v[$r]);
                    if ($ef == null) {
                        $this->llista[$i][$r] = 'no encontrado';
                    } else {
                        foreach ($lallista as $elem) {
                            $this->llista[$i][$r] = $elem[$this->fk[$r][1]];
                            $this->llista[$i][$r . 'codi'] = $v[$r];
                        }
                    }
                } else {
                    //formateamos los double con 2 decimales
                    if (isset($this->tipoDades[$r])) {
                        if ($this->tipoDades[$r] == 'double') {
                            $this->llista[$i][$r] = number_format($v[$r], 2, '.', '');
                        } else {
                            if ($this->tipoDades[$r] == 'date') {
                                $this->llista[$i][$r . 'date'] = $v[$r];
                                $this->llista[$i][$r] = $this->utiles->mostraDatafromBD($v[$r]) . ' - ' . $this->utiles->mostraTimefromBD($v[$r]);
                            } else {
                                $this->llista[$i][$r] = $v[$r];
                            }
                        }
                    } else {
                        $this->llista[$i][$r] = $v[$r];
                    }
                }
            }
            $i++;
        }
    }

    //Para liberación detalle
    public function getLlistaksTLld($producto, $localizacion) {


        if ($producto != null && $producto != '' && $producto != 0) {
            $qproducto = " AND productok = " . $producto;
        } else {
            $qproducto = '';
        }
        if ($localizacion != null && $localizacion != '' && $localizacion != 0) {
            $qlocalizacion = " AND localizacionk = " . $localizacion;
        } else {
            $qlocalizacion = '';
        }
        $squery = "SELECT *";
        $squery = $squery . " FROM kardex,tipomovimiento,localizacion,tipolocalizacion ";
        $squery = $squery . " WHERE tipomovimientok = codigoTipoMovimiento ";
        $squery = $squery . " AND cantidadpendiente > 0 ";
        $squery = $squery . " AND localizacionk = codigoLocalizacion AND tipoLocalizacion = codigoTipoLocalizacion AND tipomovimientok = codigoTipoMovimiento";
        $squery = $squery . $qproducto . $qlocalizacion;
        $squery = $squery . " ORDER BY codigoTipoLocalizacion,codigoLocalizacion,fechaKardex";
        $resultado = mysql_query($squery, $this->bd->conexion);
        $llistaprevia = array();
        $i = 0;
        /*
         * 'localizacionk' => array('Localizacion', 'descripcionLocalizacion', 'localizacionSelected', 'localizacion'),
          'tipomovimientok' => array('Tipomovimiento', 'descripcionTipoMovimiento', 'tipomovimientoSelected', 'tipomovimiento'),
          'rolk' => array('Rol', 'descripcionRol', 'rolSelected', 'rol'),
          'usuariok' => array('Usuario', 'codigoUsuario', 'usuarioSelected', 'usuario'),
          'productok' => array('Producto', 'descripcionProducto', 'productoSelected', 'producto'),
          'localizacionprocedk' => array('Localizacion', 'descripcionLocalizacion', 'loca
         */
        while ($v = mysql_fetch_array($resultado)) {
            foreach ($v as $r => $index) {
                if (isset($this->fk[$r])) {
                    $otro = false;
                    if (strtoupper($this->fk[$r][0]) != strtoupper($this->entitat)) {
                        require_once($this->fk[$r][0] . '.php');
                        $otro = true;
                    }
                    $laentidad = 'new ' . $this->fk[$r][0] . '($this->bd);';
                    eval('$ef = ' . $laentidad);
                    $this->llista[$i][$r] = ''; //$v[$r];
                    //selectClau
                    $lallista = $ef->selectClau($v[$r]);
                    if ($ef == null) {
                        $this->llista[$i][$r] = 'no encontrado';
                    } else {
                        foreach ($lallista as $elem) {
                            $this->llista[$i][$r] = $elem[$this->fk[$r][1]];
                            $this->llista[$i][$r . 'codi'] = $v[$r];
                        }
                    }
                } else {
                    //formateamos los double con 2 decimales
                    if (isset($this->tipoDades[$r])) {
                        if ($this->tipoDades[$r] == 'double') {
                            $this->llista[$i][$r] = number_format($v[$r], 2, '.', '');
                        } else {
                            if ($this->tipoDades[$r] == 'date') {
                                $this->llista[$i][$r . 'date'] = $v[$r];
                                $this->llista[$i][$r] = $this->utiles->mostraDatafromBD($v[$r]) . ' - ' . $this->utiles->mostraTimefromBD($v[$r]);
                            } else {
                                $this->llista[$i][$r] = $v[$r];
                            }
                        }
                    } else {
                        $this->llista[$i][$r] = $v[$r];
                    }
                }
            }
            $i++;
        }
    }

    public function updateLiberado($kardexchange, $valorliber) {
        /*
         * ELS NOMS DELS CAMPS A UPDATE SON A $nomDadesUpdate
         * Antes del update
         * - se evita inyección de código con addslashes
         * - se cambia string a int en el caso de int a la bbdd
         * - se utiliza Utiles para preparar el sql (SET ... WHERE ...)
         */


        $update = mysql_query("UPDATE " . $this->entitat . " SET liberadok = " . $valorliber . " WHERE codigoKardex = " . $kardexchange, $this->bd->conexion);
        if ($update) {
            $_SESSION['missatge'] = "msg-bbdd-060";
            return true;
        } else {
            $_SESSION['missatge'] = "msg-bbdd-070";
            return false;
        }
    }

}

?>
